package com.fanghuaiming.seata.item.dao.mapper;

import com.fanghuaiming.seata.item.dao.model.SeataTccSku;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/****
 * @description: 商品dao操作接口
 * @version:1.0.0
 * @author fanghuaiming
 * @data Created in 2020/11/27 下午1:57
 *
 */
@Repository
public interface SeataTccSkuMapper {

    /**
     * @Description:扣减库存
     * 
     * @param:
     * @return: 
     * @auther: fanghuaiming
     * @date: 2020/11/30 下午5:23
     * @version:1.0.0
     */
    void decrease(Long productId, Integer count);

    /**
     * @Description: 冻结库存
     *
     * @param:
     * @return:
     * @auther: fanghuaiming
     * @date: 2020/11/30 下午5:24
     * @version:1.0.0
     */
    void updateFrozen(@Param("productId") Long productId, @Param("residue") Integer residue, @Param("frozen") Integer frozen);

    /**
     * @Description: 提交时,把冻结量修改到已售出
     *
     * @param:
     * @return:
     * @auther: fanghuaiming
     * @date: 2020/11/30 下午5:25
     * @version:1.0.0
     */
    void updateFrozenToUsed(@Param("productId") Long productId, @Param("count") Integer count);

    /**
     * @Description: 回滚时,把冻结量修改到可用库存
     *
     * @param:
     * @return:
     * @auther: fanghuaiming
     * @date: 2020/11/30 下午5:26
     * @version:1.0.0
     */
    void updateFrozenToResidue(@Param("productId") Long productId, @Param("count") Integer count);

    /**
     * @Description: 查询商品库存
     *
     * @param:
     * @return:
     * @auther: fanghuaiming
     * @date: 2020/11/30 下午5:52
     * @version:1.0.0
     */
    SeataTccSku selectById(@Param("productId") Long productId);
}
